import Vue from 'vue'
import iView from '../static/iview/index.js'
// 定制iview 的主题颜色
import '../static/iview/config/iview-theme/theme.less'
// 引入字体样式样式
import "../static/web_font/iconfont.css"
// 引入公共组件样式
import './style/public.scss'

import directiveList from "./directive/directiveIndex"
import componentsList from "./components/componentsIndex.js"
// 引入该文件，就扩展了原生对象
import prototypeExtendObj from "./js/prototype/prototypeExtend.js"
import userInfo from './extend/extendUserInfo.js'
import VueLogger from 'vuejs-logger'
import eventBus from './components/tools/eventBus.js'

const options = {
    // required ['debug', 'info', 'warn', 'error', 'fatal']
    logLevel : 'debug',
    // optional : defaults to false if not specified
    stringifyArguments : true,
    // optional : defaults to false if not specified
    showLogLevel : true,
    // optional : defaults to false if not specified
    showMethodName : true,
    // optional : defaults to '|' if not specified
    separator: '|',
    // optional : defaults to false if not specified
    showConsoleColors: true
}
// 引入日志功能
Vue.use(VueLogger, options);
// 引入iview UI 组件
Vue.use(iView)
// 引入事件总线插件
Vue.use(eventBus)

const zlstPluginObj = {};


const install = function (Vue, opts = {}) {
    // 遍历所有的组件
    Object.keys(componentsList).forEach((key) => {
        Vue.component(key, componentsList[key]);
    });
    // 遍历所有的指令
    Object.keys(directiveList).forEach((key) => {
        Vue.directive(key, directiveList[key]);
    });
    // 扩展原生的对象
    prototypeExtendObj.init();
    // 扩展用户信息
    Vue.prototype.$userInfo = userInfo;
};

// auto install
if (typeof window !== 'undefined' && window.Vue) {
    install(window.Vue);
}
export default Object.assign(zlstPluginObj, {install});
